Modern storage systems are commonly employed for storing large amounts of data for easy and fast access. There is a general requirement that data storage systems include a high level of reliability and availability, especially when critical applications provide a high availability service, such as “software as a service” or SaaS, to an organization's users or customers. Despite the rapid evolution in storage technology, computer networks, and software applications, a data storage system can nevertheless experience hardware or software failures.
A typical configuration for ensuring data availability includes a cluster arrangement, where two or more redundant computer servers, referred to as nodes, run application programs that access data stored on a disk, storage subsystem, or other storage-related device shared by the nodes, for example, Redundant Array of Independent Disk (RAID) arrays. High availability can be achieved by configuring two nodes to communicate with each other and with the shared disk array via an IP network. Redundant hardware arranged in a cluster configuration can eliminate a single point of failure and ensure that, in the event of a hardware failure, an application and its data are accessible. For example, if one node with a critical application crashes, then the application can be restarted on the other node.